/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @param <E> clase generica de la cual se utilizara el Comparable.
 * @author Alejo
 */
public interface PriorityQueue <E extends Comparable<E>> {
    
    /**
     *  Procedimiento que de no estar vacia la cola, el procedimiento  devuelve el objeto de valor minimo en la cola con prioridad.
     * @return Devuelve el objeto de menor valor en la cola con prioridad.
     */
    public E getFirst();

/**
 * Procedimiento que de no estar vacia la cola, el procedimiento devuelve el objeto de valor minimo en la cola con prioridad y luego lo retira de la cola.
 * @return Devuelve el objeto de menor valor en la cola con prioridad.
 */
public E remove();


/**
 * Procedimiento que recibe como parametro un objeto generico, el cual de no ser nulo, es agregado a la cola con prioridad.
 * @param value Es el objeto generico que sera agregado a la cola, no puede ser nulo.
 */
public void add(E value);

/**
 * Procedimiento que permite determinar si la cola contiene elementos. 
 * @return Devuelve True si la cola esta vacia, de lo contrario devuelve False.
 */
public boolean isEmpty();

/**
 * Procedimiento que permite conocer cuantos elementos se encuentran dentro la cola.
 * @return Devuelve un numero entero que representa la cantidad de elementos en la cola.
 */
public int size();

/**
 * Procedimiento que retira a todos los elementos de las cola.
 */
public void clear();
    
}
